package cn.iocoder.yudao.module.museum.controller.admin.collectionmanagement.vo;

import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import cn.iocoder.yudao.framework.excel.core.convert.DictExtConvert;
import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 藏品管理 Response VO")
@Data
@ExcelIgnoreUnannotated
public class CollectionManagementRespVO {

    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "499")
    @ExcelProperty("主键ID")
    private Long id;

    @Schema(description = "藏品总登记号")
    @ExcelProperty("藏品总登记号")
    private String generalAccessionNumber;

    @Schema(description = "编号类型", example = "1")
    @ExcelProperty(value = "编号类型", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_NUMBER_TYPE)
    private String numberType;

    @Schema(description = "名称", example = "张三")
    @ExcelProperty("名称")
    private String name;

    @Schema(description = "编号")
    @ExcelProperty("编号")
    private String number;

    @Schema(description = "件数")
    @ExcelProperty("件数")
    private Integer numberOfCases;

    @Schema(description = "原名", example = "王五")
    @ExcelProperty("原名")
    private String originalName;

    @Schema(description = "年代")
    @ExcelProperty("年代")
    private String era;

    @Schema(description = "单位")
    @ExcelProperty("单位")
    private String numberUnit;

    @Schema(description = "地质年代")
    @ExcelProperty("地质年代")
    private String geologicalEra;

    @Schema(description = "实际数量")
    @ExcelProperty("实际数量")
    private Integer actualQuantity;

    @Schema(description = "考古学年代")
    @ExcelProperty("考古学年代")
    private String archaeologicalEra;

    @Schema(description = "外形尺寸(cm)-通长")
    @ExcelProperty("外形尺寸(cm)-通长")
    private String sizeLength;

    @Schema(description = "中国历史学年代")
    @ExcelProperty("中国历史学年代")
    private String chineseHistoricalEra;

    @Schema(description = "外形尺寸(cm)-通宽")
    @ExcelProperty("外形尺寸(cm)-通宽")
    private String sizeWidth;

    @Schema(description = "外形尺寸(cm)-通高")
    @ExcelProperty("外形尺寸(cm)-通高")
    private String sizeHeight;

    @Schema(description = "具体年代")
    @ExcelProperty("具体年代")
    private String specificEra;

    @Schema(description = "具体尺寸")
    @ExcelProperty("具体尺寸")
    private String specificSize;

    @Schema(description = "文物类别")
    @ExcelProperty(value = "文物类别", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_CATEGORY) // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String category;

    @Schema(description = "质量-质量范围")
    @ExcelProperty("质量-质量范围")
    private String weightRange;

    @Schema(description = "质地类别1")
    @ExcelProperty(value = "质地类别1", converter = DictExtConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_TEXTURE) // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String materialCategory1;

    @Schema(description = "质地类别2")
    @ExcelProperty(value = "质地类别2", converter = DictExtConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_TEXTURE) // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String materialCategory2;

    @Schema(description = "质地")
    @ExcelProperty(value = "质地", converter = DictExtConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_TEXTURE) // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String material;

    @Schema(description = "质量-具体质量")
    @ExcelProperty("质量-具体质量")
    private BigDecimal specificWeight;

    @Schema(description = "质量-单位")
    @ExcelProperty("质量-单位")
    private String weightUnit;

    @Schema(description = "文物级别")
    @ExcelProperty(value = "文物级别", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_GRADE)
    private String relicLevel;

    @Schema(description = "文物来源")
    @ExcelProperty(value = "文物来源", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_SOURCE)
    private String relicSource;

    @Schema(description = "完残程度")
    @ExcelProperty(value = "完残程度", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_CONDITION_STATUS)
    private String completenessDegree;

    @Schema(description = "完残状况")
    @ExcelProperty("完残状况")
    private String completenessCondition;

    @Schema(description = "保存状态")
    @ExcelProperty(value = "保存状态", converter = DictConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_PRESERVATION_STATUS)
    private String preservationState;

    @Schema(description = "入藏时间范围")
    @ExcelProperty("入藏时间范围")
    private String collectionTimeRange;

    @Schema(description = "入藏年度")
    @ExcelProperty("入藏年度")
    private String collectionYear;

    @Schema(description = "藏品登记号")
    @ExcelProperty("藏品登记号")
    private String collectionRegistrationNumber;

    @Schema(description = "版本")
    @ExcelProperty("版本")
    private String version;

    @Schema(description = "存卷")
    @ExcelProperty("存卷")
    private String storageVolume;

    @Schema(description = "行政区划")
    @ExcelProperty("行政区划")
    private String administrativeDivision;

    @Schema(description = "单位编码")
    @ExcelProperty("单位编码")
    private String unitCode;

    @Schema(description = "单位名称", example = "芋艿")
    @ExcelProperty("单位名称")
    private String unitName;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;



    //扩展字段

    @Schema(description = "画心尺寸-长")
    @ExcelProperty("画心尺寸-长")
    private Double paintingLength;

    @Schema(description = "画心尺寸-宽")
    @ExcelProperty("画心尺寸-宽")
    private Double paintingWidth;

    @Schema(description = "画心尺寸-高")
    @ExcelProperty("画心尺寸-高")
    private Double paintingHeight;

    @Schema(description = "装裱尺寸-长")
    @ExcelProperty("装裱尺寸-长")
    private Double mountingLength;

    @Schema(description = "装裱尺寸-宽")
    @ExcelProperty("装裱尺寸-宽")
    private Double mountingWidth;

    @Schema(description = "装裱尺寸-高")
    @ExcelProperty("装裱尺寸-高")
    private String mountingHeight;

    @Schema(description = "内容题材")
    @ExcelProperty("内容题材")
    private String subjectMatter;

    @Schema(description = "技法风格")
    @ExcelProperty("技法风格")
    private String techniqueStyle;

    @Schema(description = "款识信息")
    @ExcelProperty("款识信息")
    private String inscriptionInfo;

    @Schema(description = "形状")
    @ExcelProperty("形状")
    private String shape;

    @Schema(description = "钮式")
    @ExcelProperty("钮式")
    private String knobStyle;

    @Schema(description = "印文内容")
    @ExcelProperty("印文内容")
    private String sealContent;

    @Schema(description = "文字类型", example = "1")
    @ExcelProperty("文字类型")
    private String textType;

    @Schema(description = "印文排列")
    @ExcelProperty("印文排列")
    private String textArrangement;

    @Schema(description = "边框特征")
    @ExcelProperty("边框特征")
    private String borderFeature;

    @Schema(description = "印面尺寸")
    @ExcelProperty("印面尺寸")
    private String sealSize;

}